#include  <Wire.h>
#include  <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include<DallasTemperature.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
OneWire oneWire(3);
DallasTemperature DS18B20(&oneWire);

int x;
float v;
float psi;
float temp;

unsigned long waktusebelum1 = 0;
unsigned long waktusebelum2 = 0;

void setup() {
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
  DS18B20.begin();
  lcd.setCursor(3, 0);
  lcd.print("Monitoring");
  lcd.setCursor(0, 1);
  lcd.print("tekanan dan suhu");
  delay(3000);
  lcd.clear();
}

void loop() {
  /*float p_pascal = (3.0 * (v - 0.47)) * 1000000.0;
    float p_bar = p_pascal / 10e5;

    Serial.print("sensor value:");
    Serial.print(x);
    Serial.print("  volt:");
    Serial.print(v);
    Serial.print("  psi:");
    Serial.print(psi);
    Serial.print("  pascal:");
    Serial.print(p_pascal);
    Serial.print("  pressure:");
    Serial.println(p_bar);
  */
  unsigned long waktusekarang1 = millis();
  if (waktusekarang1 - waktusebelum1 >= 1000) {
    x = analogRead(A0);
    v = x * (5.0 / 1024.0);
    psi = 250 * (v / 5.0);
    psi = psi - 24;
    if (psi < 1) {
      psi = 0;
    }
    lcd.setCursor(0, 0);
    lcd.print("PSI = ");
    lcd.print(psi);
    lcd.print("  ");
    waktusebelum1 = millis();
  }
  unsigned long waktusekarang2 = millis();
  if (waktusekarang2 - waktusebelum2 >= 500) {
    DS18B20.requestTemperatures();
    temp = DS18B20.getTempCByIndex(0);
    lcd.setCursor(0, 1);
    lcd.print("Suhu= ");
    lcd.print(temp);
    lcd.print((char)223);
    lcd.print("C  ");
    waktusebelum2 = millis();
  }
}